package com.ccp.dev.system.service;

import com.ccp.dev.core.basic.base.BaseService;
import com.ccp.dev.core.basic.util.UUIDUtils;
//import com.ccp.dev.core.basic.web.query.QueryFilter;
//import com.ccp.dev.core.util.Convert;
import com.ccp.dev.core.util.BeanUtils;
import com.ccp.dev.system.dao.IndexLayoutManageDao;
import com.ccp.dev.system.dao.ObjRightsDao;
import com.ccp.dev.system.model.IndexLayoutManage;
import com.ccp.dev.system.model.ObjRights;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;

/**
 * 首页布局管理 服务层实现
 *
 * @author doufangzheng
 * @date 2019-03-27
 */
@Service
public class IndexLayoutManageService extends BaseService<IndexLayoutManage> {
    @Resource
    private IndexLayoutManageDao indexLayoutManageDao;

    @Resource
    private ObjRightsDao objRightsDao;

    /**
     * 查询首页布局管理列表
     *
     * @param indexLayoutManage 首页布局管理信息
     * @return 首页布局管理集合
     */

    public List<IndexLayoutManage> selectIndexLayoutManageList(IndexLayoutManage indexLayoutManage) {
        return indexLayoutManageDao.selectIndexLayoutManageList(indexLayoutManage);
    }

    /**
     * 应用首页布局
     *
     * @param indexLayoutManage 首页布局管理信息
     * @return 结果
     */
    //TODO 这个方法应该删掉了
    public int apply(IndexLayoutManage indexLayoutManage) {
        //暂时写死用户唯一标识
        String userId = "test_user";
        ObjRights objRights = new ObjRights();
        objRights.setOwnerId(userId);
        objRights.setRightType("0");
        try {
            //先清除掉该用户的布局授权信息，然后再新增一条
            objRightsDao.deleteObjRightsByOwnerIdAndRightType(objRights);
            objRights.setId(UUIDUtils.getUUIDFor32());
            objRights.setObjectId(indexLayoutManage.getId());
            objRights.setObjType(ObjRights.RIGHT_TYPE_INDEX_LAYOUT);
            //重新插入一条新的授权信息
            objRightsDao.insertObjRights(objRights);
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }

        return 1;
    }

    /**
     * 获取当前登录用户的默认首页
     *
     * @param userID 用户唯一标识
     * @return 结果
     */
    //TODO 这个方法应该删掉了
    public List<IndexLayoutManage> getLayout4CurrentUser(String userID) {
        userID = "test_user";
        ObjRights objRights = new ObjRights();
        objRights.setObjType(ObjRights.RIGHT_TYPE_INDEX_LAYOUT);
        objRights.setOwnerId(userID);
        objRights.setRightType("0");
        List<ObjRights> objRightsList = objRightsDao.selectObjRightsList(objRights);
        if (!objRightsList.isEmpty()) {
            String layOutId = objRightsList.get(0).getObjectId();
            IndexLayoutManage indexLayoutManage = new IndexLayoutManage();
            indexLayoutManage.setId(layOutId);
            List<IndexLayoutManage> indexLayoutManageList = indexLayoutManageDao.selectIndexLayoutManageList(indexLayoutManage);
            return indexLayoutManageList;
        }
        return null;
    }

    
    /**
     * 设置取参数id以外所有首页布局均为非默认应用
     * @param id  主键
     * @return int数量
     */
    @Transactional(rollbackFor = Exception.class)
    public int apply(String id) {
        IndexLayoutManage indexLayoutManage = indexLayoutManageDao.getById(id);
        indexLayoutManage.setIsDef(1);
    	//当前布局更改为默认
    	int ret = indexLayoutManageDao.update(indexLayoutManage);
    	//其他布局更改为非默认
    	indexLayoutManageDao.notApply(id);
    	return ret;
    }

    /**
     * 根据布局管理id查询布局管理名称
     * @param ids 主键数组
     * @return nameList
     */
    public List<String> queryIndexColumnNameByIds(String[] ids){
        if(BeanUtils.isEmpty(ids)){
            return null;
        }
        return indexLayoutManageDao.queryLayoutManageNameByIds(Arrays.asList(ids));
    }

}
